/*
 * jQuery EasyTabs plugin 3.1.1
 *
 * Copyright (c) 2010-2011 Steve Schwartz (JangoSteve)
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Date: Tue Jan 26 16:30:00 2012 -0500
 */
(function(a) {
  a.easytabs = function(j, e) {
    var f = this,
      q = a(j),
      i = {
        animate: true,
        panelActiveClass: "active",
        tabActiveClass: "active",
        defaultTab: "li:first-child",
        animationSpeed: "normal",
        tabs: "> ul > li",
        updateHash: true,
        cycle: false,
        collapsible: false,
        collapsedClass: "collapsed",
        collapsedByDefault: true,
        uiTabs: false,
        transitionIn: "fadeIn",
        transitionOut: "fadeOut",
        transitionInEasing: "swing",
        transitionOutEasing: "swing",
        transitionCollapse: "slideUp",
        transitionUncollapse: "slideDown",
        transitionCollapseEasing: "swing",
        transitionUncollapseEasing: "swing",
        containerClass: "",
        tabsClass: "",
        tabClass: "",
        panelClass: "",
        cache: true,
        panelContext: q
      },
      h, l, v, m, d, t = {
        fast: 200,
        normal: 400,
        slow: 600
      },
      r;
    f.init = function() {
      f.settings = r = a.extend({}, i, e);
      if (r.uiTabs) {
        r.tabActiveClass = "ui-tabs-selected";
        r.containerClass = "ui-tabs ui-widget ui-widget-content ui-corner-all";
        r.tabsClass = "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all";
        r.tabClass = "ui-state-default ui-corner-top";
        r.panelClass = "ui-tabs-panel ui-widget-content ui-corner-bottom"
      }
      if (r.collapsible && e.defaultTab !== undefined && e.collpasedByDefault === undefined) {
        r.collapsedByDefault = false
      }
      if (typeof(r.animationSpeed) === "string") {
        r.animationSpeed = t[r.animationSpeed]
      }
      a("a.anchor").remove().prependTo("body");
      q.data("easytabs", {});
      f.setTransitions();
      f.getTabs();
      b();
      g();
      w();
      n();
      c();
      q.attr("data-easytabs", true)
    };
    f.setTransitions = function() {
      v = (r.animate) ? {
        show: r.transitionIn,
        hide: r.transitionOut,
        speed: r.animationSpeed,
        collapse: r.transitionCollapse,
        uncollapse: r.transitionUncollapse,
        halfSpeed: r.animationSpeed / 2
      } : {
        show: "show",
        hide: "hide",
        speed: 0,
        collapse: "hide",
        uncollapse: "show",
        halfSpeed: 0
      }
    };
    f.getTabs = function() {
      var x;
      f.tabs = q.find(r.tabs), f.panels = a(), f.tabs.each(function() {
        var A = a(this),
          z = A.children("a"),
          y = A.children("a").data("target");
        A.data("easytabs", {});
        if (y !== undefined && y !== null) {
          A.data("easytabs").ajax = z.attr("href")
        } else {
          y = z.attr("href")
        }
        y = y.match(/#([^\?]+)/)[0].substr(1);
        x = r.panelContext.find("#" + y);
        if (x.length) {
          x.data("easytabs", {
            position: x.css("position"),
            visibility: x.css("visibility")
          });
          x.not(r.panelActiveClass).hide();
          f.panels = f.panels.add(x);
          A.data("easytabs").panel = x
        } else {
          f.tabs = f.tabs.not(A)
        }
      })
    };
    f.selectTab = function(x, C) {
      var y = window.location,
        B = y.hash.match(/^[^\?]*/)[0],
        z = x.parent().data("easytabs").panel,
        A = x.parent().data("easytabs").ajax;
      if (r.collapsible && !d && (x.hasClass(r.tabActiveClass) || x.hasClass(r.collapsedClass))) {
        f.toggleTabCollapse(x, z, A, C)
      } else {
        if (!x.hasClass(r.tabActiveClass) || !z.hasClass(r.panelActiveClass)) {
          o(x, z, A, C)
        } else {
          if (!r.cache) {
            o(x, z, A, C)
          }
        }
      }
    };
    f.toggleTabCollapse = function(x, y, z, A) {
      f.panels.stop(true, true);
      if (u(q, "easytabs:before", [x, y, r])) {
        f.tabs.filter("." + r.tabActiveClass).removeClass(r.tabActiveClass).children().removeClass(r.tabActiveClass);
        if (x.hasClass(r.collapsedClass)) {
          if (z && (!r.cache || !x.parent().data("easytabs").cached)) {
            q.trigger("easytabs:ajax:beforeSend", [x, y]);
            y.load(z, function(C, B, D) {
              x.parent().data("easytabs").cached = true;
              q.trigger("easytabs:ajax:complete", [x, y, C, B, D])
            })
          }
          x.parent().removeClass(r.collapsedClass).addClass(r.tabActiveClass).children().removeClass(r.collapsedClass).addClass(r.tabActiveClass);
          y.addClass(r.panelActiveClass)[v.uncollapse](v.speed, r.transitionUncollapseEasing, function() {
            q.trigger("easytabs:midTransition", [x, y, r]);
            if (typeof A == "function") {
              A()
            }
          })
        } else {
          x.addClass(r.collapsedClass).parent().addClass(r.collapsedClass);
          y.removeClass(r.panelActiveClass)[v.collapse](v.speed, r.transitionCollapseEasing, function() {
            q.trigger("easytabs:midTransition", [x, y, r]);
            if (typeof A == "function") {
              A()
            }
          })
        }
      }
    };
    f.matchTab = function(x) {
      return f.tabs.find("[href='" + x + "'],[data-target='" + x + "']").first()
    };
    f.matchInPanel = function(x) {
      return (x ? f.panels.filter(":has(" + x + ")").first() : [])
    };
    f.selectTabFromHashChange = function() {
      var y = window.location.hash.match(/^[^\?]*/)[0],
        x = f.matchTab(y),
        z;
      if (r.updateHash) {
        if (x.length) {
          d = true;
          f.selectTab(x)
        } else {
          z = f.matchInPanel(y);
          if (z.length) {
            y = "#" + z.attr("id");
            x = f.matchTab(y);
            d = true;
            f.selectTab(x)
          } else {
            if (!h.hasClass(r.tabActiveClass) && !r.cycle) {
              if (y === "" || f.matchTab(m).length || q.closest(y).length) {
                d = true;
                f.selectTab(l)
              }
            }
          }
        }
      }
    };
    f.cycleTabs = function(x) {
      if (r.cycle) {
        x = x % f.tabs.length;
        $tab = a(f.tabs[x]).children("a").first();
        d = true;
        f.selectTab($tab, function() {
          setTimeout(function() {
            f.cycleTabs(x + 1)
          }, r.cycle)
        })
      }
    };
    f.publicMethods = {
      select: function(x) {
        var y;
        if ((y = f.tabs.filter(x)).length === 0) {
          if ((y = f.tabs.find("a[href='" + x + "']")).length === 0) {
            if ((y = f.tabs.find("a" + x)).length === 0) {
              if ((y = f.tabs.find("[data-target='" + x + "']")).length === 0) {
                if ((y = f.tabs.find("a[href$='" + x + "']")).length === 0) {
                  a.error("Tab '" + x + "' does not exist in tab set")
                }
              }
            }
          }
        } else {
          y = y.children("a").first()
        }
        f.selectTab(y)
      }
    };
    var u = function(A, x, z) {
        var y = a.Event(x);
        A.trigger(y, z);
        return y.result !== false
      };
    var b = function() {
        q.addClass(r.containerClass);
        f.tabs.parent().addClass(r.tabsClass);
        f.tabs.addClass(r.tabClass);
        f.panels.addClass(r.panelClass)
      };
    var g = function() {
        var y = window.location.hash.match(/^[^\?]*/)[0],
          x = f.matchTab(y).parent(),
          z;
        if (x.length === 1) {
          h = x;
          r.cycle = false
        } else {
          z = f.matchInPanel(y);
          if (z.length) {
            y = "#" + z.attr("id");
            h = f.matchTab(y).parent()
          } else {
            h = f.tabs.parent().find(r.defaultTab);
            if (h.length === 0) {
              a.error("The specified default tab ('" + r.defaultTab + "') could not be found in the tab set.")
            }
          }
        }
        l = h.children("a").first();
        p(x)
      };
    var p = function(z) {
        var y, x;
        if (r.collapsible && z.length === 0 && r.collapsedByDefault) {
          h.addClass(r.collapsedClass).children().addClass(r.collapsedClass)
        } else {
          y = a(h.data("easytabs").panel);
          x = h.data("easytabs").ajax;
          if (x && (!r.cache || !h.data("easytabs").cached)) {
            q.trigger("easytabs:ajax:beforeSend", [l, y]);
            y.load(x, function(B, A, C) {
              h.data("easytabs").cached = true;
              q.trigger("easytabs:ajax:complete", [l, y, B, A, C])
            })
          }
          h.data("easytabs").panel.show().addClass(r.panelActiveClass);
          h.addClass(r.tabActiveClass).children().addClass(r.tabActiveClass)
        }
      };
    var w = function() {
        f.tabs.children("a").bind("click.easytabs", function(x) {
          r.cycle = false;
          d = false;
          f.selectTab(a(this));
          x.preventDefault()
        })
      };
    var o = function(z, D, E, H) {
        f.panels.stop(true, true);
        if (u(q, "easytabs:before", [z, D, r])) {
          var A = f.panels.filter(":visible"),
            y = D.parent(),
            F, x, C, G, B = window.location.hash.match(/^[^\?]*/)[0];
          if (r.animate) {
            F = s(D);
            x = A.length ? k(A) : 0;
            C = F - x
          }
          m = B;
          G = function() {
            q.trigger("easytabs:midTransition", [z, D, r]);
            if (r.animate && r.transitionIn == "fadeIn") {
              if (C < 0) {
                y.animate({
                  height: y.height() + C
                }, v.halfSpeed).css({
                  "min-height": ""
                })
              }
            }
            if (r.updateHash && !d) {
              window.location.hash = "#" + D.attr("id")
            } else {
              d = false
            }
            D[v.show](v.speed, r.transitionInEasing, function() {
              y.css({
                height: "",
                "min-height": ""
              });
              q.trigger("easytabs:after", [z, D, r]);
              if (typeof H == "function") {
                H()
              }
            })
          };
          if (E && (!r.cache || !z.parent().data("easytabs").cached)) {
            q.trigger("easytabs:ajax:beforeSend", [z, D]);
            D.load(E, function(J, I, K) {
              z.parent().data("easytabs").cached = true;
              q.trigger("easytabs:ajax:complete", [z, D, J, I, K])
            })
          }
          if (r.animate && r.transitionOut == "fadeOut") {
            if (C > 0) {
              y.animate({
                height: (y.height() + C)
              }, v.halfSpeed)
            } else {
              y.css({
                "min-height": y.height()
              })
            }
          }
          f.tabs.filter("." + r.tabActiveClass).removeClass(r.tabActiveClass).children().removeClass(r.tabActiveClass);
          f.tabs.filter("." + r.collapsedClass).removeClass(r.collapsedClass).children().removeClass(r.collapsedClass);
          z.parent().addClass(r.tabActiveClass).children().addClass(r.tabActiveClass);
          f.panels.filter("." + r.panelActiveClass).removeClass(r.panelActiveClass);
          D.addClass(r.panelActiveClass);
          if (A.length) {
            A[v.hide](v.speed, r.transitionOutEasing, G)
          } else {
            D[v.uncollapse](v.speed, r.transitionUncollapseEasing, G)
          }
        }
      };
    var s = function(y) {
        if (y.data("easytabs") && y.data("easytabs").lastHeight) {
          return y.data("easytabs").lastHeight
        }
        var z = y.css("display"),
          x = y.wrap(a("<div>", {
            position: "absolute",
            visibility: "hidden",
            overflow: "hidden"
          })).css({
            position: "relative",
            visibility: "hidden",
            display: "block"
          }).outerHeight();
        y.unwrap();
        y.css({
          position: y.data("easytabs").position,
          visibility: y.data("easytabs").visibility,
          display: z
        });
        y.data("easytabs").lastHeight = x;
        return x
      };
    var k = function(y) {
        var x = y.outerHeight();
        if (y.data("easytabs")) {
          y.data("easytabs").lastHeight = x
        } else {
          y.data("easytabs", {
            lastHeight: x
          })
        }
        return x
      };
    var n = function() {
        if (typeof a(window).hashchange === "function") {
          a(window).hashchange(function() {
            f.selectTabFromHashChange()
          })
        } else {
          if (a.address && typeof a.address.change === "function") {
            a.address.change(function() {
              f.selectTabFromHashChange()
            })
          }
        }
      };
    var c = function() {
        var x;
        if (r.cycle) {
          x = f.tabs.index(h);
          setTimeout(function() {
            f.cycleTabs(x + 1)
          }, r.cycle)
        }
      };
    f.init()
  };
  a.fn.easytabs = function(c) {
    var b = arguments;
    return this.each(function() {
      var e = a(this),
        d = e.data("easytabs");
      if (undefined === d) {
        d = new a.easytabs(this, c);
        e.data("easytabs", d)
      }
      if (d.publicMethods[c]) {
        return d.publicMethods[c](Array.prototype.slice.call(b, 1))
      }
    })
  }
})(jQuery);

/*================================================================*/
/*	ROTATING TESTIMONIALS
/*================================================================*/
$(document).ready(function() {
  $('.rotating-testimonials').easytabs({
    animationSpeed: 400,
    updateHash: false,
    cycle: 5000
  });
});

/*================================================================*/
/*	SIDE BAR TABS
/*================================================================*/
$(document).ready(function() {
  $('.sidebar-tabs').easytabs({
    transitionIn: 'slideDown',
    updateHash: false
  });
});

/*================================================================*/
/*	CONTENT TABS
/*================================================================*/
$(document).ready(function() {
  $('.content-tabs').easytabs({
    transitionIn: 'slideDown',
    updateHash: false
  });
});